// pages/user/index.js
const userManager = require('../../utils/userManager');
const api = require('../../utils/api');

Page({
  data: {
    isLoggedIn: false,
    userInfo: {
      avatar: '/images/icon/user_placeholder.png',
      nickname: '微信用户',
      phone: ''
    },
    accountInfo: {
      balance: '0.00',
      points: 0,
      coupons: 0,
      groupBuys: 0,
      level: ''
    },
    functions: [
      { icon: '/images/icon/meituan.png', name: '美团验券' },
      { icon: '/images/icon/douyin.png', name: '抖音验券' },
      { icon: '/images/icon/kuaishou.png', name: '快手验券' },
      { icon: '/images/icon/gaode.png', name: '高德验券' },
      { icon: '/images/icon/wifi.png', name: 'WiFi连接' },
      { icon: '/images/icon/favorite.png', name: '收藏门店' },
      { icon: '/images/icon/checkin.png', name: '每日签到' },
      { icon: '/images/icon/invite.png', name: '邀请福利' },
      { icon: '/images/icon/service.png', name: '精彩秀' },
      { icon: '/images/icon/storage.png', name: '存取杆' }
    ],
    franchiseInfo: {
      storeCount: '7000',
      cityCount: '286'
    }
  },

  onLoad: function () {
    wx.setNavigationBarTitle({
      title: '个人中心',
    });
  },

  onShow: function() {
    // 每次页面显示时检查登录状态
    this.checkLoginStatus();
  },

  // 检查登录状态
  checkLoginStatus: function() {
    const isLoggedIn = userManager.isLoggedIn();
    
    this.setData({ isLoggedIn });
    
    if (isLoggedIn) {
      // 已登录，获取用户信息和账户信息
      this.loadUserInfo();
      this.getAccountInfo();
    } else {
      // 尝试自动登录
      this.tryAutoLogin();
    }
  },
  
  // 尝试自动登录
  tryAutoLogin: function() {
    wx.showLoading({ title: '加载中...' });
    
    userManager.autoLogin()
      .then(userInfo => {
        if (userInfo) {
          // 自动登录成功
          this.setData({
            isLoggedIn: true,
            userInfo: userInfo
          });
          // 获取账户信息
          this.getAccountInfo();
        } else {
          // 需要手动登录，保持当前状态
          console.log('需要手动登录');
        }
      })
      .catch(err => {
        console.error('自动登录失败', err);
      })
      .finally(() => {
        wx.hideLoading();
      });
  },

  // 加载用户信息
  loadUserInfo: function () {
    const userInfo = userManager.getUserInfo();
    if (userInfo) {
      this.setData({ userInfo });
    }
  },

  getAccountInfo: function () {
    // 已登录状态下获取账户信息
    if (!this.data.isLoggedIn) {
      return;
    }
    
    api.user.getAccountInfo()
      .then(res => {
        if (res && res.data) {
          // 处理balance，确保是2位小数的格式
          const balance = parseFloat(res.data.balance || 0);
          
          // 确保会员等级信息存在
          const accountInfo = {
            ...res.data,
            level: res.data.level || '普通会员',
            balance: balance.toFixed(2) // 格式化为2位小数的字符串
          };
          
          this.setData({
            accountInfo: accountInfo
          });
        }
      })
      .catch(err => {
        console.error('获取账户信息失败', err);
        wx.showToast({
          title: '获取账户信息失败',
          icon: 'none'
        });
      });
  },

  // 去登录页面
  goToLogin: function() {
    wx.navigateTo({
      url: '/pages/user/login'
    });
  },

  onTapSettings: function () {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 点击设置图标，跳转到用户信息页面
    wx.navigateTo({
      url: '/pages/user/userinfo',
      fail: function (res) {
        console.log('跳转失败', res);
      }
    });
  },

  onTapRecharge: function () {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 点击充值按钮，跳转到账户充值页面
    wx.setStorageSync('couponTabIndex', 0);
    wx.reLaunch({
      url: '/pages/coupon/index',
      fail: function (res) {
        console.log('跳转失败', res);
      }
    });
  },

  onTapVerify: function(e) {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 获取点击的平台类型
    const platform = e.currentTarget.dataset.platform;
    
    // 跳转到验券页面，并传递平台类型参数
    wx.navigateTo({
      url: `/pages/coupon/verify?type=${platform}`,
      fail: function(res) {
        console.log('跳转失败', res);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  onTapFunction: function (e) {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    wx.showModal({
      title: 'WiFi连接信息',
      content: '网络名称：ShareSpace_WiFi\n密码：share123456',
      confirmText: '复制密码',
      cancelText: '关闭',
      success: (res) => {
        if (res.confirm) {
          // 复制密码到剪贴板
          wx.setClipboardData({
            data: 'share123456',
            success: function() {
              wx.showToast({
                title: '密码已复制',
                icon: 'success'
              });
            }
          });
        }
      }
    });
  },

  onTapFavorite: function () {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 点击收藏门店，跳转到收藏门店页面
    wx.navigateTo({
      url: '/pages/user/favorite',
      fail: function (res) {
        console.log('跳转失败', res);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  onTapCheckin: function () {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 点击每日签到，跳转到签到页面
    wx.navigateTo({
      url: '/pages/user/checkin',
      fail: function (res) {
        console.log('跳转失败', res);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  onTapFranchise: function () {
    // 点击加盟按钮
    wx.showToast({
      title: '加盟功能开发中',
      icon: 'none'
    });
  },

  onTapPoints: function () {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 点击积分区域，跳转到优惠券页面并显示积分标签页
    // 由于switchTab不能直接传参，需要通过全局变量或本地存储来设置要显示的标签页
    // 这里可以使用本地存储来传递要显示的标签页索引
    wx.setStorageSync('couponTabIndex', 2);
    wx.reLaunch({
      url: '/pages/coupon/index',
      success: function () {
      },
      fail: function (res) {
        console.log('跳转失败', res);
      }
    });
  },

  onTapCoupon: function () {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 点击优惠券区域，跳转到我的卡包页面并显示优惠券标签页
    wx.navigateTo({
      url: '/pages/wallet/index?tabIndex=1'
    });
  },

  onTapGroupBuy: function () {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 点击团购券区域，跳转到我的卡包页面并显示团购券标签页
    wx.navigateTo({
      url: '/pages/wallet/index?tabIndex=0'
    });
  },

  onTapCustomerService: function () {
    // 点击微信图标，拨打客服电话
    wx.makePhoneCall({
      phoneNumber: '400-123-4567', // 客服电话号码
      success: function () {
        console.log('拨打电话成功');
      },
      fail: function (err) {
        console.log('拨打电话失败', err);
        wx.showToast({
          title: '拨打电话失败',
          icon: 'none'
        });
      }
    });
  },

  onShareAppMessage: function () {
    // 自定义分享内容
    return {
      title: '共享空间 - 随时随地，轻松预约',
      path: '/pages/index/index',
      imageUrl: '/images/share_image.png' // 分享图片
    };
  },
  
  onTapStorage: function () {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.goToLogin();
      return;
    }
    
    // 点击存取杆，跳转到存取杆页面
    wx.navigateTo({
      url: '/pages/user/storage',
      fail: function (res) {
        console.log('跳转失败', res);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },
  
  // 退出登录
  onTapLogout: function() {
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除登录状态
          userManager.clearLoginState();
          // 更新页面显示
          this.setData({
            isLoggedIn: false,
            userInfo: {
              avatar: '/images/icon/user_placeholder.png',
              nickname: '微信用户',
              phone: ''
            },
            accountInfo: {
              balance: '0.00',
              points: 0,
              coupons: 0,
              groupBuys: 0
            }
          });
        }
      }
    });
  }
});